/* 表单验证 */

// 名称
const name = /^\w{3,10}$/
// 手机号码
const tel = /^1[345789]\d{9}$/
// 邮箱
const email = /^(\w+\.?)*\w+@(?:\w+\.)\w+$/
// 密码
const password = /(?!.*\s)(?!^[0-9]+$)(?!^[A-z]+$)(?!^[^A-z0-9]+$)^.{8,16}$/
// 省份证
const regId = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
// URL
const url = /^(http(s)?:\/\/)?(www\.)?[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+(:\d+)?(\/\w+)*([\?&]\w+=\w*)*$/

const FormValidate = (function () {
    // eslint-disable-next-line
    function FormValidate() {}
    // From表单验证规则  可用于公用的校验部分
    FormValidate.Form = function () {
        return {
            // 用户名的验证
            Name: (rule, value, callback) => {
                if (!value || !name.test(value)) {
                    callback(new Error('请输入3-10位的字符'))
                } else {
                    callback()
                }
            },
            // 电话号码的验证
            Tel: (rule, value, callback) => {
                if (!value || !tel.test(value)) {
                    callback(new Error('请输入正确的手机号'))
                } else {
                    callback()
                }
            },
            // 邮箱的正则
            Email: (rule, value, callback) => {
                if (!value || !email.test(value)) {
                    callback(new Error('请输入正确的邮箱'))
                } else {
                    callback()
                }
            },
            Password: (rule, value, callback) => {
                if (!value || !password.test(value)) {
                    callback(new Error('8-16位,字母/数字/字符至少包含两种'))
                } else {
                    callback()
                }
            },
            // 身份证的验证规则
            ID: (rule, value, callback) => {
                if (!value || !regId.test(value)) {
                    callback(new Error('请输入正确的二代身份证号码'))
                } else {
                    callback()
                }
            },
            // URL的验证规则
            URL: (rule, value, callback) => {
                if (!value || !url.test(value)) {
                    callback(new Error('请输入正确的URL'))
                } else {
                    callback()
                }
            }
        }
    }
    return FormValidate
}())
exports.FormValidate = FormValidate
